<?php
class EmpresasController extends AppController {

	var $name = 'Empresas';
        var $appModule = 'Maestros';
	var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList');
        var $uses  =array('Empresa','UnidadMedida','Moneda');

	function index() {
            $q = $this->getBusqueda($this->data['Empresa']['busqueda']);
            $this->set('q', $q);
            $conditions['Empresa.activo'] = 1;
            if (!empty($q))
                $conditions['OR'] = array(
                    'Empresa.codigo SIMILAR TO'=>$q,
                    'Empresa.descripcion SIMILAR TO'=>"%$q%"
                );
            $this->Empresa->bindModel(array(
                'belongsTo'=>array(
                    'UnidadMedida'=>array('foreignKey'=>'peso_unidad_id'),
                    'Moneda'=>array('foreignKey'=>'moneda_id'),
                )));
            $this->paginate['Empresa'] = array(
                'conditions'=>$conditions,
                'order'=>'Empresa.codigo',
                'contain'=>array(
                    'UnidadMedida'=>array('fields'=>array('simbolo')),
                    'Moneda'=>array('fields'=>array('simbolo')),
                )
            );
            $data = $this->paginate('Empresa');
            $this->set('empresas', $data);
            $this->set('limite', $this->limite);
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Empresa invalida.', true));
			$this->redirect(array('action'=>'index'));
		}
                $this->Empresa->bindModel(array(
                    'belongsTo'=>array(
                        'UnidadMedida'=>array('foreignKey'=>'peso_unidad_id'),
                        'Moneda'=>array('foreignKey'=>'moneda_id'),
                    )));
                $data = $this->Empresa->find('first', array(
                    'conditions'=>array('Empresa.id'=>$id),
                    'contain'=>array(
                        'Moneda',
                        'UnidadMedida'
                    )
                ));
		$this->set('empresa', $data);
	}

	function add() {
		if (!empty($this->data)) {
                        $this->data['Empresa']['activo'] = 1;
                        $this->data['Empresa']['usuario_creacion_id'] = $this->usuarioId();
                        $this->data['Empresa']['fecha_creacion'] = 'now()';

			$this->Empresa->create();
			if ($this->Empresa->save($this->data)) {
				$this->Session->setFlash(__('La Empresa ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('La Empresa no ha podido ser guardado. Intente nuevamente..', true));
			}
		}
                $this->set('pesoUnidads', $this->UnidadMedida->find('list',array(
                    'fields'=>array('id','simbolo'),
                    'order'=>'codigo',
                    'conditions'=>array('activo'=>1)
                )));
                $this->set('monedas', $this->Moneda->find('list',array(
                    'fields'=>array('id','simbolo'),
                    'order'=>'codigo',
                    'conditions'=>array('activo'=>1)
                )));
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Empresa Invalido', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
                        $this->data['Empresa']['usuario_modificacion_id'] = $this->usuarioId();
                        $this->data['Empresa']['fecha_modificacion'] = 'now()';
			if ($this->Empresa->save($this->data)) {
				$this->Session->setFlash(__('La Empresa ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('La Empresa no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		if (empty($this->data)) {
                        $this->Empresa->recursive = -1;
			$this->data = $this->Empresa->read(null, $id);
		}
                $this->set('pesoUnidads', $this->UnidadMedida->find('list',array(
                    'fields'=>array('id','simbolo'),
                    'order'=>'codigo',
                    'conditions'=>array('activo'=>1)
                )));
                $this->set('monedas', $this->Moneda->find('list',array(
                    'fields'=>array('id','simbolo'),
                    'order'=>'codigo',
                    'conditions'=>array('activo'=>1)
                )));
	}

	function delete($id = null, $verbose = true) {
                if (!$id) {
                    if ($verbose){
                        $this->Session->setFlash(__('Id de Empresa invalido', true));
                        $this->redirect(array('action'=>'index'));
                    }
                    else return false;
                }
                $this->Empresa->recursive = -1;
                $data = $this->Empresa->read(null, $id);
                $data['Empresa']['activo']=0;
                $data['Empresa']['usuario_borrado_id']=$this->usuarioId();
                $data['Empresa']['fecha_borrado']='now()';

                if (!$this->Empresa->save($data) && !verbose)
                        return false;
                if ($verbose){
                    $this->Session->setFlash(__('Empresa eliminado', true));
                    $this->redirect(array('action'=>'index'));
                }
                else return true;
	}

        function process(){// procesa anulaciones y eliminaciones en bloque
            $op = isset($this->params['form']['delete'])?'eliminar':'anular';
            $flag = true;
            $i = 0;
            foreach($this->data as $item){
                if ($item['id']!='0'){
                    if(isset($this->params['form']['delete'])){ // eliminar
                        $flag = $this->delete($item['Empresa']['id'], false);
                    }
                    if (!$flag){
                        $data = $this->Empresa->read(null, $item['Empresa']['id']);
                        $this->Session->setFlash(__("Se ha producido un error al $op la Empresa #".$data['Empresa']['codigo'], true));
                        break;
                    }
                }
                $i++;
            }
            if ($flag && $i > 0){
                $this->Session->setFlash(__("El proceso de $op Empresas se ha realizado con exito.", true));
            }
            $this->redirect(array('action'=>'index'));
        }

}
?>